package com.hhd.day03.tst

fun main(args: Array<String>) {
    val list = ArrayList<Apple>()
    setFruitList(list)
}

/**
 * 设置水果集合。
 *
 * list 只能是 Fruit 类型。
 * <out Fruit> 作用相当于<？ extents Fruit>
 * <in Fruit> 作用相当于<？ super Fruit>
 */
fun setFruitList(list: ArrayList<out Fruit>) {
    println("集合长度= " + list.size)
}


/**
 * 箱子（物品类型不确定，定义泛型和使用泛型）
 */
open class Box<T>(var thing: T)

/**
 * 物品
 */
abstract class Thing

/**
 * 水果
 */
abstract class Fruit : Thing()

/**
 * 苹果
 */
class Apple : Fruit()

/**
 * 橘子
 */
class Orange : Fruit()
